package com.cnsdhh.javajms.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.IOException;

public class QueueConsumer {
    public static void main(String[] args) throws IOException, JMSException {
        //1.创建连接工厂对象（需要中间件连接地址：tcp://192.168.25.153:61616）
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.153:61616");
        //2.使用连接工厂创建连接
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();

        //4.使用连接创建会话（参数1：是否启动事务  参数2：消息确认方式）
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.使用会话创建消息队列
        Queue queue = session.createQueue("test-queue");

        //6.使用会话创建消费者（需要消息队列：queue）
        MessageConsumer consumer = session.createConsumer(queue);
        //7.使用消费者设置监听，用来监听消息
        consumer.setMessageListener(new MessageListener() {
            public void onMessage(Message message) {
                //当监听到消息的时候会调用此方法，message是接受到的消息，在onMessage()中处理
                TextMessage textMessage = (TextMessage) message;
                try {
                    System.out.println("接收到的消息：" + textMessage.getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
        //8.等待键盘输入（实现保持监听状态不关闭）
        System.in.read();

        //9.关闭连接资源
        consumer.close();
        session.close();
        connection.close();
    }
}
